home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
t_os
/
kirei
/
kirei.bas
< prev
next >
Wrap
BASIC Source File
|
1993-11-30
|
4KB
|
179 lines
10 '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
20 ' 簡易 CD PLAYER(キレイだぞ~号)
30 '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
40 ' Copyright (C) 1993 Naohiko Toyokura (ToYoZo)
50 DEF SPRITE 99,0
60 CLEAR,,512,FRE(4)-200000,0,0
70 DEFINT A-Z
80 DIM MUSIC(INT(FRE(4)/2-102000)),UX(4),UY(4),MX(63),MY(63),P(63),C(15),CDI(5),CDS(8)
90 LOAD@"kirei.eup",MUSIC
100 PLAY@ MUSIC,1
110 DEF FNMOS(A,B,C,D)=(MOUSE(0)>=A AND MOUSE(0)<=C AND MOUSE(1)>=B AND MOUSE(1)<=D)
120 FOR I=0 TO 4
130 READ UX(I),UY(I)
140 NEXT
150 DATA 0,0,0,-1,1,0,0,1,-1,0
160 CDNO=1
170 '
180 SCREEN@0
190 CLS
200 LOAD@"STAR.TIF"
210 GET@A(0,0)-(15,15),P
220 CLS
230 DEF SPRITE 0,0,P,0
240 FOR I=0 TO 1
250 FOR J=0 TO 31
260 IF I THEN A!=(31-J)/31 ELSE A!=J/31
270 FOR K=0 TO 5
280 C(K)=INT(K*6*A!)*2^10+INT(K*6*A!)*2^5+INT(K*6*A!)
290 NEXT K
300 DEF SPRITE 2,I*32+J,C
310 NEXT J,I
320 FOR I=0 TO 63
330 DEF SPRITE 1,I,(160,120),0,1,1,0,I
340 NEXT
350 '
360 SPRITE ON
370 OUT &H440,27,2:OUT &H442,1*4096+1*256,2
380 OUT &H440,12,2:OUT &H442,138+512,2
390 OUT &H440,16,2:OUT &H442,70+512*2,2
400 OUT &H440,11,2:OUT &H442,138,2
410 OUT &H440,15,2:OUT &H442,70,2
420 LOAD@"kirei.tif"
430 FOR I=0 TO 63
440 SPRITE 0,I,1
450 NEXT
460 INTERVAL 1
470 ON INTERVAL GOSUB *TIME
480 MOUSE 0
490 MOUSE 1,320,240,1
500 MOUSE 4,0,0,635,475
510 ON ERROR GOTO *ERROR
520 '
530 ON MOUSE(1) GOSUB 740
540 ON MOUSE(2) GOSUB *CD
550 MOUSE(1) ON
560 MOUSE(2) ON
570 INTERVAL ON
580 '
590 A=1:B=1
600 MOUSE(1) STOP
610 MOUSE(2) STOP
620 IF RND<.05! THEN IF A=1 THEN A=-1 ELSE A=1
630 IF RND<.05! THEN IF B=1 THEN B=-1 ELSE B=1
640 FOR I=63 TO 0 STEP -1
650 IF I=0 THEN MX(0)=A:MY(0)=B ELSE MX(I)=MX(I-1):MY(I)=MY(I-1)
660 SPRITE 6,I,MX(I)*5,MY(I)*5
670 IF SPRITE(I,2)<63 THEN SPRITE 2,I,SPRITE(I,2)+1 ELSE SPRITE 2,I,0
680 NEXT
690 MOUSE(1) ON
700 MOUSE(2) ON
710 IF RND<.005! THEN GOSUB *STAR
720 GOTO 600
730 '
740 FOR LOOP=1 TO 60
750 MOUSE(2) STOP
760 IF MOUSE(0)/2>SPRITE(0,6)+5 THEN A=1 ELSE IF MOUSE(0)/2<SPRITE(0,6)-5 THEN A=-1 ELSE A=0
770 IF MOUSE(1)/2>SPRITE(0,7)+5 THEN B=1 ELSE IF MOUSE(1)/2<SPRITE(0,7)-5 THEN B=-1 ELSE B=0
780 FOR I=63 TO 0 STEP -1
790 IF I=0 THEN MX(0)=A:MY(0)=B ELSE MX(I)=MX(I-1):MY(I)=MY(I-1)
800 SPRITE 6,I,MX(I)*5,MY(I)*5
810 IF SPRITE(I,2)<63 THEN SPRITE 2,I,SPRITE(I,2)+1 ELSE SPRITE 2,I,0
820 NEXT I
830 MOUSE(2) ON
840 NEXT LOOP
850 RETURN 590
860 '
870 *CD
880 IF FNMOS(0,50,99,69) THEN *PLAY
890 IF FNMOS(100,50,199,69) THEN *NEXT
900 IF FNMOS(200,50,299,69) THEN *BACK
910 IF FNMOS(300,50,399,69) THEN *STOP
920 IF FNMOS(400,50,499,69) THEN *BGM
930 IF FNMOS(0,0,99,19) THEN *EXIT
940 RETURN
950 '
960 *PLAY
970 PLAY OFF
980 CDINF CDI
990 CD PLAY CDNO,CDI(5)
1000 GOSUB *TIME
1010 RETURN
1020 '
1030 *NEXT
1040 PLAY OFF
1050 CDINF CDI
1060 CD PLAY CDNO+1,CDI(5)
1070 CDNO=CDNO+1
1080 GOSUB *TIME
1090 RETURN
1100 '
1110 *BACK
1120 PLAY OFF
1130 CDINF CDI
1140 CD PLAY CDNO-1,CDI(5)
1150 CDNO=CDNO-1
1160 GOSUB *TIME
1170 RETURN
1180 '
1190 *STOP
1200 CDNO=1
1210 GOSUB *TIME
1220 CD STOP
1230 RETURN
1240 '
1250 *BGM
1260 GOSUB *STOP
1270 PLAY@ MUSIC,1
1280 RETURN
1290 '
1300 *EXIT
1310 INTERVAL OFF
1320 ON ERROR GOTO 1500
1330 MOUSE 5
1340 FOR I=0 TO 63
1350 SPRITE 0,I,0
1360 WAIT 3
1370 NEXT
1380 FOR I=0 TO 255 STEP 5
1390 PALETTE 0,[I,I,I],1
1400 NEXT
1410 FOR I=0 TO 15
1420 PALETTE I,7,1
1430 WAIT 10
1440 NEXT
1450 CLS
1460 FOR I=254 TO 0 STEP -2
1470 PALETTE 0,[I,I,I],1
1480 NEXT
1490 CD STOP
1500 END
1510 '
1520 *ERROR
1530 IF ERR<>115 THEN RESUME 940
1540 CDNO=CDNO+1:RESUME
1550 '
1560 *TIME
1570 CDSTAT CDS
1580 LINE(10,85)-(160,102),PSET,0,BF
1590 SYMBOL(10,86),"No,"+STR$(CDS(5))+" "+STR$(CDS(6))+" m"+STR$(CDS(7))+" s",1,1,4
1600 RETURN
1610 '
1620 *STAR
1630 MOUSE(1) STOP
1640 MOUSE(2) STOP
1650 INTERVAL STOP
1660 MOUSE 1,,,0
1670 IF RND<.333! THEN
1680 FOR K=0 TO 600 STEP 4:PSET(650-K,K),7:PSET(650-(K-100),K-100),0:NEXT
1690 ELSE IF RND<.333! THEN
1700 FOR K=0 TO 450 STEP 4:PSET(K,150+K),7:PSET(K-100,150+K-100),0:NEXT
1710 ELSE
1720 FOR K=0 TO 750 STEP 4:PSET(K,300-K/5),7:PSET(K-100,300-(K-100)/5),0:NEXT
1730 ENDIF
1740 MOUSE 1,,,1
1750 INTERVAL ON
1760 MOUSE(2) ON
1770 MOUSE(1) ON
1780 RETURN